package com.uh.rds.testing.base;

import com.uh.rds.testing.validator.DataValidatorArguments;
import redis.clients.jedis.Jedis;

import java.util.List;
import java.util.Map;

public interface DataTester {

    /**
     * 初始化数据
     * @param threadIndex 显示的索引, 一般是线程的编号
     * @param shardIndex 分片的索引
     * @param config 配置信息
     * @param data 测试数据，key为数据类型，value为数据内容
     */
    void init(Integer threadIndex, int shardIndex, DataValidatorArguments config, Map<String, List<String[]>> data);

    /**
     * 设置运行时的连接
     * @param processJedis 用于处理数据的连接
     * @param validateJedis 用于验证数据的连接
     */
    void setRuntime(Jedis processJedis, Jedis validateJedis);


    /**
     * 获取名称
     *
     * @return 返回显示运行的名称，name = type + "-" + index;
     */
    String getName(); //

    /**
     * 获取类型
     * @return 类型如String, Set, ZSet, Hash等
     */
    String getType(); //

    /**
     * 处理数据，一版指插入数据
     */
    void process();


    /**
     * 从RDS中清理之前插入的数据。
     * @return 删除的数据数量
     */
    long clear();


}
